
#include <stdio.h>          // 标准输入输出
#include <stdint.h>         // 几种扩展的整数类型和宏
#include <stdlib.h>         // 标准函数库
#include <string.h>         // 字符串处理(操作字符数组)
#include "ohos_init.h"          // 用于初始化服务(services)和功能(features)
#include "cmsis_os2.h"          // CMSIS-RTOS API V2

#include "drv_dido.h"
#include "common.h"
#include "wifi_connecter.h"     // easy wifi (station模式)
#include "bmsinfo.h"
#include "iot_gpio.h"  
#include "iot_gpio_ex.h"




void initDIDO(void)
{
    // init
    IoTGpioInit(DIDO1_GPIO);    
    IoTGpioInit(DIDO2_GPIO);    
    IoTGpioInit(DIDO3_GPIO);    
    IoTGpioInit(DIDO4_GPIO);    

    // function select
    IoSetFunc(DIDO1_GPIO, DIDO1_FUNC);
    IoSetFunc(DIDO2_GPIO, DIDO2_FUNC);
    IoSetFunc(DIDO3_GPIO, DIDO3_FUNC);
    IoSetFunc(DIDO4_GPIO, DIDO4_FUNC);
    
    // set dir
    IoTGpioSetDir(DIDO1_GPIO, IOT_GPIO_DIR_OUT);
    IoTGpioSetDir(DIDO2_GPIO, IOT_GPIO_DIR_OUT);
    IoTGpioSetDir(DIDO3_GPIO, IOT_GPIO_DIR_OUT);
    IoTGpioSetDir(DIDO4_GPIO, IOT_GPIO_DIR_OUT);

}

void setDIDO1(uint8_t state)
{
    if (state == 0)
    {
        IoTGpioSetOutputVal(DIDO1_GPIO, IOT_GPIO_VALUE0);
    }
    else
    {
        IoTGpioSetOutputVal(DIDO1_GPIO, IOT_GPIO_VALUE1);
    }
}
void setDIDO2(uint8_t state)
{
    if (state == 0)
    {
        IoTGpioSetOutputVal(DIDO2_GPIO, IOT_GPIO_VALUE0);
    }
    else
    {
        IoTGpioSetOutputVal(DIDO2_GPIO, IOT_GPIO_VALUE1);
    }
}
void setDIDO3(uint8_t state)
{
    if (state == 0)
    {
        IoTGpioSetOutputVal(DIDO3_GPIO, IOT_GPIO_VALUE0);
    }
    else
    {
        IoTGpioSetOutputVal(DIDO3_GPIO, IOT_GPIO_VALUE1);
    }
}
void setDIDO4(uint8_t state)
{
    if (state == 0)
    {
        IoTGpioSetOutputVal(DIDO4_GPIO, IOT_GPIO_VALUE0);
    }
    else
    {
        IoTGpioSetOutputVal(DIDO4_GPIO, IOT_GPIO_VALUE1);
    }
}


void dev_dido_updateoutput(void)
{
    _SystemDataStru *bmsInf = getBmsInf();
    setDIDO1(bmsInf->hi_switch_state.Switch1);
    setDIDO2(bmsInf->hi_switch_state.Switch2);
    setDIDO3(bmsInf->hi_switch_state.Switch3);
    setDIDO4(bmsInf->hi_switch_state.Switch4);
}